package jobs.event.selectable;

import java.util.List;
import javax.faces.model.ListDataModel;
import jobs.model.facade.EntityFacade;
import org.primefaces.model.SelectableDataModel;

/**
 * Nos permite seleccionar un modelo de selección.
 *
 * @author Paul Tamayo
 */
public class ModelSelectable<T extends EntityFacade> extends ListDataModel<EntityFacade> implements SelectableDataModel<EntityFacade> {

    /**
     * Constructor por defecto.
     */
    public ModelSelectable() {
    }

    /**
     * Constructor que nos permite inicializar una lista de entidades.
     *
     * @param entities
     */
    public ModelSelectable(List<EntityFacade> entities) {
        super(entities);
    }

    /**
     * Nos devuelve el identificador de la entidad.
     *
     * @param entity Entidad de la cual va o obtener el identificador.
     * @return Identificador
     */
    @Override
    public Object getRowKey(EntityFacade entity) {
        return entity.getId();
    }

    /**
     * Dado el identificador nos devuelve la entidad.
     *
     * @param id Identificador
     * @return Devuelve la entidad con el identificador pasado por parámetro.
     */
    @Override
    public EntityFacade getRowData(String id) {
        List<EntityFacade> entities = (List<EntityFacade>) getWrappedData();

        for (EntityFacade entity : entities) {
            if (entity.getId().toString().compareTo(id) == 0) {
                return entity;
            }
        }

        return null;
    }
}
